﻿#include <QCoreApplication>
#include <QString>
#include <QDebug>

//字符串加密
QString encrypt(QString plainText,QString key)
{
    QString encryptedText;
    for(int i=0;i<plainText.size();i++)
    {
        int keyPosition=i%key.size();               //计算钥匙使用的字符位置
        encryptedText[i]=plainText[i].toLatin1()^key[keyPosition].toLatin1();//使用异或运算获得加密后字符
    }
    return encryptedText;
}

//字符串解密
QString decrypt(QString cipherText,QString key)
{
    QString decryptedText;
    for(int i=0;i<cipherText.size();i++)
    {
        int keyPosition=i%key.size();
        decryptedText[i]=cipherText[i].toLatin1()^key[keyPosition].toLatin1();
    }
    return decryptedText;
}


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QString text="hello world!";
    QString key1="myKey";
    QString key2="false";
    QString encryptedText=encrypt(text,key1);
    QString Text1=decrypt(encryptedText,key1);//使用正确密钥
    QString Text2=decrypt(encryptedText,key2);//使用错误密钥
    qDebug()<<Text1<<endl<<Text2;

    return a.exec();
}
